package com.ruoyi.cs.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.cs.domain.TBattleInfo;
import com.ruoyi.cs.domain.TBox;
import com.ruoyi.cs.domain.vo.PageInfoParamVo;
import com.ruoyi.cs.domain.vo.TBoxVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.Cacheable;

/**
 * 箱子信息Mapper接口
 * 
 * @author ruoyi
 * @date 2021-03-25
 */
public interface TBoxMapper 
{
    /**
     * 查询箱子信息
     * 
     * @param boxId 箱子信息ID
     * @return 箱子信息
     */
    public TBox selectTBoxById(String boxId);

    /**
     * 查询箱子信息列表
     * 
     * @param tBox 箱子信息
     * @return 箱子信息集合
     */
    public List<TBox> selectTBoxList(TBox tBox);

    /**
     * 根据箱子标题查询箱子及箱子中最贵饰品图片
     *
     * @param boxtitleIdList
     * @return
     */
    public List<TBox> selectTBoxListAndGoodsPic(@Param("boxtitleIdList") List<String> boxtitleIdList, @Param("boxType") String boxType,@Param("sortBy") String sortBy);


    public List<TBox> selectTBoxListAndGoodsPicNew(@Param("boxtitleIdList") List<String> boxtitleIdList);


    public List<TBox> selectHomeBoxList(@Param("boxtitleIdList") List<String> boxtitleIdList);

    /**
     * 新增箱子信息
     * 
     * @param tBox 箱子信息
     * @return 结果
     */
    public int insertTBox(TBox tBox);

    /**
     * 修改箱子信息
     * 
     * @param tBox 箱子信息
     * @return 结果
     */
    public int updateTBox(TBox tBox);

    /**
     * 删除箱子信息
     * 
     * @param boxId 箱子信息ID
     * @return 结果
     */
    public int deleteTBoxById(String boxId);

    /**
     * 批量删除箱子信息
     * 
     * @param boxIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteTBoxByIds(String[] boxIds);


    /**
     * 批量停用启用箱子信息
     *
     * @param boxIds 需要删除的数据ID
     * @return 结果
     */
    public int updateDelFlagTBoxByIds(@Param(value="delFlag") String delFlag,@Param(value="boxIds")  String[] boxIds);
    /**
     * 根据箱子标签ID统计是否存在可用箱子
     * @param boxtitleIds
     * @return
     */
    public int bacthTBoxCount(@Param(value="delFlag") String delFlag,@Param(value="boxtitleIds") String[] boxtitleIds);


    /**
     * 统计存在可用状态的数据  0 1 都表示可用 2 表示删除状态
     * @param boxtitleIds
     * @return
     */
    public int  bacthTBoxCountDelect (@Param(value="boxtitleIds") String[] boxtitleIds);
    /**
     * 根据箱子ID查询出对应的箱子标签是有有未启用的
     * @param boxIds
     * @return
     */
    public int bacthTBoxTitleCount(@Param(value="boxIds") String[] boxIds);


    public List<TBox> getTBoxListBatch(@Param(value="delFlag") String delFlag,@Param(value="boxIds") List<String> boxIds);

    /**
     * 箱子名称列表
     * @return
     */
    public List<Map> boxNameList();

    /**
     * 后台箱子管理列表
     * @param tBoxVo
     * @return
     */
    public List<TBoxVo> boxListBack(TBoxVo tBoxVo);

    public List<TBoxVo> battleBoxListBack(TBoxVo tBoxVo);

    /**
     * 后台开箱统计列表
     * @param tBoxVo
     * @return
     */
    public List<TBoxVo> boxListBackCount(TBoxVo tBoxVo);

    /**
     * 获取所有对战的箱子列表
     * @return
     */
    public List<TBox> battleBoxList(PageInfoParamVo tBox);


    public int updateJackpot(TBox tBox);


    public int updateBattleJackpotBatch(@Param("beanList") List<TBox> beanList);

    /**
     * 根据ID批量查询箱子
     *
     * @param boxIds
     * @return
     */
    public List<TBox> selectTBoxListByIds(@Param("boxIds")List<String> boxIds);

    public List<String> selectTBoxListByNames(@Param("boxNames")List<String> boxNames);

    /**
     * 批量修改箱子价格
     * @param beanList
     * @return
     */
    public int updateBoxPriceBatch(@Param("beanList") List<TBox> beanList);

    /**
     * 查询价格区间的对战箱子
     * @param maxPrice
     * @return
     */
    public List<TBox> selectBattleBoxByPrice(@Param("maxPrice") String maxPrice);

    /**
     * 查询机器人测试  箱子列表
     * @return
     */
    public List<TBox> queryRobotTBoxList();

    /**
     * @Desc: 获取战令箱子
     * @author: zz
     * @date: 2023/12/14
     */
    public List<Map<String, Object>> getWarBoxList(String searchValue);

    /**
     * @Desc:获取所有的箱子ID
     * @author: zz
     * @date: 2024/2/5
     */
    public List<String> getAllBoxId();
}
